package com.xique.door.service;


import com.xique.common.core.web.domain.AjaxResult;
import com.xique.door.bean.domain.Visitor;
import com.xique.door.bean.request.visitor.VisitorListRequest;

import java.util.List;
import java.util.Map;

/**
 * 访客信息Service接口
 *
 * @author caogq
 * @date 2021-06-12
 */
public interface IVisitorService {
    /**
     * 查询访客信息
     *
     * @param id 访客信息ID
     * @return 访客信息
     */
    public Visitor selectVisitorById(Long id);

    /**
     * 查询访客信息
     *
     * @param ids 访客信息ID
     * @return 访客信息
     */
    List<Visitor> selectVisitorByIds(List<Long> ids);

    /**
     * 查询访客信息列表
     *
     * @param visitor 访客信息
     * @return 访客信息集合
     */
    public List<Visitor> selectVisitorList(Visitor visitor);

    /**
     * 查询访客信息列表
     * @author shd
     * @date 2022/2/26 13:21
     * @param request
     * @return java.util.List<com.xique.door.bean.domain.Visitor>
     */
    List<Visitor> selectVisitorListV2(VisitorListRequest request);

    /**
     * 根据customId查询访客信息
     * @author shd
     * @date 2022/3/2 14:55
     * @param customIds
     * @return java.util.List<com.xique.door.bean.domain.Visitor>
     */
    List<Visitor> selectVisitorListByCustomIds(List<String> customIds);

    /**
     * 新增访客信息
     *
     * @param visitor 访客信息
     * @return 结果
     */
    public int insertVisitor(Visitor visitor);

    /**
     * 修改访客信息
     *
     * @param visitor 访客信息
     * @return 结果
     */
    public int updateVisitor(Visitor visitor);

    /**
     * 批量删除访客信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public AjaxResult deleteVisitorByIds(String ids);

    /**
     * 删除访客信息信息
     *
     * @param id 访客信息ID
     * @return 结果
     */
    public int deleteVisitorById(Long id);

    List<Visitor> selectUnAssignVisitorlist(Visitor visitor);

    /**
     * @param userId
     * @param visitorIds
     * @return
     */
    int insertUserVisitor(Long userId, String visitorIds);

    List<Visitor> selectUserVisitorList(Map<String, Object> map);

    /**
     * 删除访客照片
     * @author shd
     * @date 2022/4/2 17:31
     * @param visitorId
     * @return int
     */
    int clearVisitorUrl(Long visitorId);

}
